#!/bin/bash

#tiempo de espera entre cada ejecucion
sleep_time="15"

########################################################################

#Verifica si el entorno esta en condiciones de ejecutar el comando.
#Retorna 0 de estar en condiciones, 1 en caso de no estar inicializado el ambiente, 2 en caso de ya existir un demonio en ejecucion
verificar_entorno()
{

#Verifico si estan seteadas las variables de entorno y existen los demas comandos

if [ "$AMBIENTE_INICIALIZADO" != "Y" ] 
then
	return 1
fi


#Verifico si ya hay un demonio ejecutandose

procesos=$(ps -e | grep "DetectarT" | wc -l)

if [ $procesos -ge 3 ]
then 	
	return 2
else
	return 0
fi
}

########################################################################

#verifica que la coincidencia cumpla con las fechas
#retorna 1 si se encuentra en condiciones, 0 en caso contrario
#utiliza la variable coincidencia
verificar_fecha() 
{
#obtengo las fechas de la coincidencia 
start_date=$(echo "$coincidencia" | sed 's/^.*,\([^,][^,]*\),\([^,]*\)$/\1/')

end_date=$(echo "$coincidencia" | sed 's/^.*,\([^,][^,]*\),\([^,]*\)$/\2/')

#tiempo actual en segundos
ahora=$(date +%s)

if [ ! -z $start_date ]
then

	#arreglo formato
	start_date=$(echo "$start_date" | awk -F/ '{print $2"/"$1"/"$3}')
	
	#paso a segundos
	start_date=$(date +%s -d $start_date)

	if [ $ahora -gt $start_date ] 
	then
	
		if [ ! -z $end_date ]
		then
		
			#arreglo formato
			end_date=$(echo "$end_date" | awk -F/ '{print $2"/"$1"/"$3}')
		
			#paso a segundos
			end_date="date +%s -d $end_date"
			
			if [ $end_date -gt $ahora ]
			then
				return 1
			else
				return 0
			fi
		else
			return 1
		fi
	
	else
		return 0
	fi
else
	return 0
fi
}


########################################################################

#Ciclo principal del demonio

########################################################################

verificar_entorno

ok=$?

if [ "$ok" -eq 0 ]
then

	#modifico el Internal Field Separator para el ciclo for
	IFS=$'\n'
	
	while true
	do 		
	
		#reviso archivos en arridir
		for archivo in $(ls "$ARRIDIR" )
		do 
			formato_valido=$(echo "$archivo" | sed 's/^[0-9][0-9]*-[0-9][0-9]*$//')
			
			if [ ! -z "$formato_valido" ]
			then
				./LoguearT "DetectarT" "I" "$archivo: formato invalido"
				./MoverT "$ARRIDIR/$archivo" "$RECHDIR"	"DetectarT"
			else
				region=$(echo "$archivo" | sed 's/-[0-9][0-9]*$//') 		#saco el '-'y el numero de sucursal
				sucursal=$(echo "$archivo" | sed 's/^[0-9][0-9]*-//')		#saco el numero de region y el '-'
				
				#comparo el nombre del archivo con los datos del archivo maestro
				coincidencia=$(grep "^$region,[^,]*,$sucursal" "$MAEDIR/sucu.mae") 
				
				if [ -z "$coincidencia" ]
				then
					./LoguearT "DetectarT" "I" "$archivo: no se encuentra en archivo maestro"
					./MoverT "$ARRIDIR/$archivo" "$RECHDIR"	"DetectarT"			
				else
					verificar_fecha
					
					mover=$?
					
					if [ "$mover" -eq 1 ]
					then
						./LoguearT "DetectarT" "I" "$archivo ha sido aceptado"
						./MoverT "$ARRIDIR/$archivo" "$GRUPO/inst_recibidas" "DetectarT"
					else
						./LoguearT "DetectarT" "I" "$archivo no se encuentra en fecha"
						./MoverT "$ARRIDIR/$archivo" "$RECHDIR" "DetectarT"		 		
					fi	
				fi	
			fi
		done 
		
		#reviso archivos en inst_recibidas
		recibidas=$(ls "$GRUPO/inst_recibidas" )
		
		if [ ! -z "$recibidas" ]
		then	
		
			#Verifico si GrabarParqueT ya se encuentra ejecutandose

			procesos=$(ps -e | grep "GrabarParqueT" | wc -l)
			
			if [ $procesos -ge 1 ]
			then 	
				echo "GrabarParqueT ya se esta ejecutando"
			else
				./GrabarParqueT &
				echo "Ejecutando GrabarParqueT con PID: $!"
			fi
		fi		
		
		sleep $sleep_time
	done 
else

	if [ "$ok" -eq 1 ]
	then
	#ambiente no inicializado
	./LoguearT "DetectarT" "E" --id_msj=DVAL
	
	else
	#demonio ya corriendo
	./LoguearT "DetectarT" "E" --id_msj=DDEM
	
	fi
	
fi

exit 0 